StarRocks将所有审计日志存储在本地文件fe/log/fe.audit.log
中,并且这些日志无法通过系统内部数据库访问。启用审计日志功能将安装AuditLoader插件,该插件能够从本地文件中读取日志,并通过HTTP PUT方法将其导入StarRocks数据库,方便您能够查看并分析数据库中发生的所有操作。
前提条件
已创建Serverless StarRocks实例,详情请参见创建实例。
开启审计日志
- 进入EMR Serverless StarRocks实例详情页面。
- 登录EMR Serverless控制台。
- 在顶部菜单栏处,根据实际情况选择地域。
- 单击目标实例的实例名称。
单击右上角的开启审计日志。
在开启审计日志对话框中,单击确定。
即可一键安装AuditLoader插件。同时,会在您的StarRocks实例中自动创建数据库_starrocks_audit_db_和数据表starrocks_audit_tbl,后续所有的审计日志都会存储于该表中。
说明目前,审计日志使用了动态分区的方式,默认存储前3天和后30天的审计数据。根据您的业务需求,您可以自行调整审计数据的存储时间,即修改
dynamic_partition.start
和dynamic_partition.end
的参数值。数据库_starrocks_audit_db_和数据表starrocks_audit_tbl的创建语句如下所示。
CREATE DATABASE _starrocks_audit_db_; CREATE TABLE _starrocks_audit_db_.starrocks_audit_tbl( `queryId` VARCHAR(48) COMMENT "Unique query ID", `timestamp` DATETIME NOT NULL COMMENT "Query start time", `queryType` VARCHAR(12) COMMENT "Query type (query, slow_query)", `clientIp` VARCHAR(32) COMMENT "Client IP address", `user` VARCHAR(64) COMMENT "User who initiates the query", `authorizedUser` VARCHAR(64) COMMENT "user_identity", `resourceGroup` VARCHAR(64) COMMENT "Resource group name", `catalog` VARCHAR(32) COMMENT "Catalog name", `db` VARCHAR(96) COMMENT "Database that the query scans", `state` VARCHAR(8) COMMENT "Query state (EOF, ERR, OK)", `errorCode` VARCHAR(96) COMMENT "Error code", `queryTime` BIGINT COMMENT "Query latency in milliseconds", `scanBytes` BIGINT COMMENT "Size of the scanned data in bytes", `scanRows` BIGINT COMMENT "Row count of the scanned data", `returnRows` BIGINT COMMENT "Row count of the result", `cpuCostNs` BIGINT COMMENT "CPU resources consumption time for query in nanoseconds", `memCostBytes` BIGINT COMMENT "Memory cost for query in bytes", `stmtId` INT COMMENT "Incremental SQL statement ID", `isQuery` TINYINT COMMENT "If the SQL is a query (0 and 1)", `feIp` VARCHAR(32) COMMENT "IP address of FE that executes the SQL", `stmt` STRING COMMENT "SQL statement", `digest` VARCHAR(32) COMMENT "SQL fingerprint", `planCpuCosts` DOUBLE COMMENT "CPU resources consumption time for planning in nanoseconds", `planMemCosts` DOUBLE COMMENT "Memory cost for planning in bytes" ) ENGINE = OLAP DUPLICATE KEY (`queryId`, `timestamp`, `queryType`) COMMENT "Audit log table" PARTITION BY RANGE (`timestamp`) () DISTRIBUTED BY HASH (`queryId`) BUCKETS 3 PROPERTIES ( "dynamic_partition.time_unit" = "DAY", "dynamic_partition.start" = "-30", "dynamic_partition.end" = "3", "dynamic_partition.prefix" = "p", "dynamic_partition.buckets" = "3", "dynamic_partition.enable" = "true", "replication_num" = "3" );
(可选)验证安装并查询审计日志。
连接StarRocks实例,详情请参见通过客户端方式连接StarRocks实例。
在SQL Editor中执行以下语句,检查插件是否安装成功。
SHOW PLUGINS;
当返回信息中AuditLoader的Status为INSTALLED时,即代表安装成功。
执行任意SQL语句以生成审计日志,并等待60秒以允许AuditLoader将审计日志批量导入至StarRocks。
执行以下命令,查看表中是否有数据,有数据则说明读取操作成功。
SELECT * FROM _starrocks_audit_db_.starrocks_audit_tbl;
关闭审计日志
由于审计日志需要占用StarRocks实例的存储空间,如果您希望节省存储空间,可以关闭该功能。
- 进入EMR Serverless StarRocks实例详情页面。
- 登录EMR Serverless控制台。
- 在顶部菜单栏处,根据实际情况选择地域。
- 单击目标实例的实例名称。
单击右上角的关闭审计日志。
在关闭审计日志对话框中,单击确定。
即可一键卸载AuditLoader插件。关闭审计日志后,数据库_starrocks_audit_db_和数据表starrocks_audit_tbl不会被删除,只会停止记录数据访问信息。如有必要,您可以手动删除这些库表以释放空间。
- 本页导读 (1)